Field of the Invention
The present invention relates to message queuing and more particularly to message queuing utilizing non-volatile memory.
Description of the Related Art
In the field of information technology, a message queue is a software-engineering component used for inter-process communications or inter-thread communications. The component employs a queue into which messages can be placed by a messenger and from which messages can be retrieved by a designated recipient. In this regard, the message queue can be a communicative component enabling asynchronous messaging as between the messenger and the designated recipient. Operationally, the message queue can support multiple messengers and recipients such that asynchronous communications can be achieved for a group of participants.
The asynchronous nature of the message queue provides for an ideal technology coupler for disparate technologies. Specifically, so long as separate technologies can access the message queue, the separate and disparate technologies can engage in message passing thereby enabling communications. In particular, the message queue can expose different method calls through an application programming interface (API) for opening, writing to, reading from, and closing the message queue. Each application in turn can include logic to invoke a sequence of the method calls in order to either place a message into the message queue, or to retrieve a message from the message queue. Specifically, in operation, upon request, the API can search a message queue for an available message and can return the same to the requesting logic.
Generally, messages are placed on message queues by one or more applications for the purpose of being processed by other applications. Messages can be processed as the messages arrive on a message queue, or messages can accumulate to be processed at a later time. The message queues themselves can be database structures in fixed storage, for example in space allocated within a hard disk drive. Alternatively, for higher speed performance, message queues can utilize caching in volatile memory. For even greater performance, the database structures can be stored in non-volatile memory such as “FLASH” memory, resulting in substantially fast access to messages in the message queue.
Of note, unlike the massive storage space afforded by fixed storage, non-volatile memory is a limited resource thus restricting the amount of messages that can be persisted in a message queue disposed thereon. To address the possibility that a message queue may become overrun with messages, message queues fail over to storing messages in a database structure in fixed storage. However, in doing so, the performance of the message queue can be greatly affected.